package org.example.springboot.utils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class QuartzCronExpressionGenerator {

    // 时间格式化模式，用于解析时间
    private static final String TIME_FORMAT = "HH:mm:ss";

    /**
     * 将时间字符串（HH:mm:ss）转换为对应的 Quartz Cron 表达式
     * @param timeString 目标时间，格式为 HH:mm:ss
     * @return 对应的 Quartz Cron 表达式
     * @throws ParseException 如果时间字符串格式不正确，则抛出异常
     */
    public static String generateQuartzCronExpression(String timeString) throws ParseException {
        // 使用 SimpleDateFormat 解析时间字符串
        SimpleDateFormat sdf = new SimpleDateFormat(TIME_FORMAT);
        Date date = sdf.parse(timeString);

        // 获取小时、分钟
        int hour = date.getHours();
        int minute = date.getMinutes();

        // Quartz Cron 表达式的格式：
        // 秒 分钟 小时 日期 月份 星期
        // 我们使用 0 作为秒，日期和星期部分用 '?' 表示不关心
        return String.format("0 %d %d * * ?", minute, hour);
    }

    public static void main(String[] args) {
        try {
            // 示例: 将 "08:00:00" 转换为 Quartz Cron 表达式
            String cronExpression = generateQuartzCronExpression("08:00:00");
            System.out.println("Quartz Cron Expression: " + cronExpression);  // 输出: 0 0 8 * * ?
            
            // 也可以尝试其他时间
            cronExpression = generateQuartzCronExpression("15:30:00");
            System.out.println("Quartz Cron Expression: " + cronExpression);  // 输出: 0 30 15 * * ?
            
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
}
